import {customerServer} from '../../api/api.js';
import {applyForAfterSales} from '../../api/api.js';
import {loadForAfterSalesDetails} from '../../api/api.js';
import {updateForAfterSales} from '../../api/api.js';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    //物流状态
    // 要是用字符串类型
    logistics:'0',
    //退款原因
    reason:'不想要了',
    //用于展示的本地路径
    imgsList:[],
    //返回的真实路径 
    returnImgs:[],
    orderDetail:[],
    //退款说明
    explain:'',
    active:"",
    //用来标志是修改售后还是申请售后
    flagId:'',
    // 修改售后获取的售后详情
    afterSaleDetail:"",
    zfb:"",//支付宝账户
    zfbName:"",//支付宝用户名
    ids:{}
   
  },


  
  onShow:function(){
       let options = getCurrentPages()[getCurrentPages().length-1].options;
      // this.setData({
      //     orderDetail,
      //     active:options.active
      // })
     
      // console.log(orderDetail,"申请售后页面");

      let id = options.id;
      if(id == this.data.flagId)return;
      console.log(id,"修改售后的id");
      // 这里是修改售后
      if(id){
        console.log("重新加载更多信息")
        this.loadMsg(id);
        this.setData({
          flagId:id
        })
      }else{
         let orderDetail = JSON.parse(options.orderDetail);
          console.log("使用页面传值",orderDetail);
          this.setData({
            orderDetail
            // active:options.active
          })
      }
  },

  selGood(e){
     console.log(e.detail.value[0],"选择的商品---------")
     let id = e.detail.value[0];
     let ids = this.data.ids;//一个对象
     ids[id] = id;//给对象里面添加一个键值对。
     this.setData({
        ids,
     })
     

  },


  changeZfb(e){
      console.log(e,"changeXfb")
      this.setData({
          zfb:e.detail
      })
  },

  changeZfbName(e){
      console.log(e,"changezfbname");
      this.setData({
          zfbName:e.detail
      })
  },


  //进来之后根据 售后id（id） 加载页面需要的数据。
   loadMsg(id){
        let data = {
            id:id,
            openId:wx.getStorageSync('loginInfo').openid
        }
        
        loadForAfterSalesDetails(data).then(res=>{
          //  console.log(res,"修改售后的加载的数据");
           let afterSaleDetail = res.data.data.orderAfterSales;
           let pic = afterSaleDetail.pic;
          //如果有图片那么让图片回显
           if(pic){
                 //把pic 变成数组的形式
                  pic = pic.split(",");
                 
                  //splice 不需要返回值，是直接操作原来的数组
                  pic.splice(pic.length-1,1);
                  console.log(pic,"这里是图片数组");
                  this.setData({
                    imgsList:pic
                  })


           }
          
           //afterSaleDetail.pic = pic;
           let explain = afterSaleDetail.afterSalesCause;
           console.log(afterSaleDetail.logisticsRecord)
           this.setData({
              orderDetail:res.data.data.orderInfo,
              // 退款说明
              explain:explain,
              
              afterSaleDetail,
              // 物流状态 （必须要使用字符串类型）
              logistics:JSON.stringify(afterSaleDetail.logisticsRecord)
              // active:options.active
           })


           console.log("%c 修改售后获取的orderDerail","color:orange;",this.data.orderDetail);



        })

   },

  //选择图片
  selImg(){
    let that = this;
    wx.chooseImage({
      success (res) {
        console.log(res,"chooseImg--res")
        const tempFilePaths = res.tempFilePaths;
        let imgsList = that.data.imgsList;
       

        //因为每次选择完图片都会调用onshow 方法，所以如果每次都执行onshow 方法
        // 的话会出bug
        console.log("原来的imgslist-----",imgsList)
        imgsList = imgsList.concat(tempFilePaths);
        that.setData({
          imgsList
       })
       
        //把选择的图片添加到imgslist 里面
        tempFilePaths.forEach(item=>{
          
            // console.log(imgsList,"循环中")
            //循环的时候发送多个请求，发送多张图片
            //一次选择的图片路径是一个数组，
            console.log(item,"--------------一次上传的图片------")
            wx.uploadFile({
              url:customerServer,
              filePath:item,
              name:'file', 
              formData:{
                'user':'test'
              },
              success (res){
                // console.log(res,"图片上传成功");
                let result = JSON.parse(res.data);
                if(result.code == 200){
                    let returnImgs = that.data.returnImgs;
                    returnImgs.push(result.data);
                    //把返回的结果存储到一个数组中
                    that.setData({
                        returnImgs
                    })
                }else{
                    wx.showToast({
                      title: '服务器错误',
                      icon:"none"
                    })
                }
                //do something
              }
            })

         
        })
        //添加到这个里面是为了回显
      }
    })
  },


  //单选框点击事件
  //物流状态
  onChange(event) {
    console.log(event,"change");
    this.setData({
      logistics: event.detail
    });
  },

  // 退货原因的readio
  onChange1(event) {
    console.log(event.detail,"change1");
    this.setData({
      reason: event.detail
    });
  },

/**
id;售后id
orderId;订单id
openId;用户id
merchantId  
商家id
spec;规格(JSON:[{规格id:数量},{规格id:数量}])
totalMoney;退款金额
afterSalesType;售后类型 1退款(无须退货)/2退款退货/3换货/4维修
logisticsRecord;是否有物流记录,0无/1有
afterSalesCause;申请售后原因
pic;售后图片JSON集合
returnShippingName;买家退回物流名称
returnShippingCode;买家退回物流单号
refuseCause;拒绝原因
barterShippingName; 卖家换货物流名称
barterShippingCode; 卖家换货物流单号
status;处理状态 1等待买家处理/2等待卖家处理/3平台介入/4处理完成
creatDate;创建时间
updateDate;  更新时间
autoexecDate;自动执行时间
version; 版本号
merchantStatus; 商家同意1/0或拒绝
 ****/  


/**
 * {
  "afterSalesType":1,//
  "logisticsRecord":1,//
  "openId":"ou3XI5YPeSZrdv1014G2I5utAilc",//
  "orderId":"1244873165662846976",//
  "merchantId":11,//
  "pic":"string",
  "refuseCause":"don't want",//
  "spec":"string",//
  "status":0,//
  "spec":"[{specId:151,num:1}]",//
  "totalMoney": 16//
}
 * 
 * 
 * **/  

  applyForAfterSales(e){
      //获取需要的数据
      console.log("申请售后",this.data.flagId);
      //判断是申请售后，还是修改售后
      if(this.data.flagId){
          //修改售后
          // ！！！！！！！！这里有一个问题，如果重新上传图片了的话，那么需要把新的图片和旧的图片都上传过去
          // 判断有没有上传新的图片
          let orderDetail = this.data.afterSaleDetail;
          console.log("%c orderdetail=========","color:orange;",orderDetail)
          let data = {
            openId:wx.getStorageSync('loginInfo').openid,
            id:this.data.afterSaleDetail.id,
            version:this.data.afterSaleDetail.version,
            status:2,
            afterSalesType:orderDetail.afterSalesType,
          }




          let reason = this.data.reason + this.data.explain;
          data.afterSalesCause = reason;
          data.logisticsRecord = this.data.logistics;
          console.log("%c 修改售后上传的数据","color:orange;",data)

          if(this.data.returnImgs.length<1){
               console.log("没有修改图片")
              //没有上传新的图片
              //重新上传原因和退款说明
              //原因和说明要拼接在一起
              updateForAfterSales(data).then(res=>{
                  console.log(res);
                  if(res.data.code == 200){
                       wx.showToast({
                         title: '修改成功！',
                         duration:3000
                       })

                      setTimeout(() => {
                        wx.navigateBack({});
                      },2000);

                  }else{
                      wx.showToast({
                        title:res.data.msg,
                        icon:"none",
                        duration:3000
                      })
                  }
              })
           
            
          }else{
              //上传了新的图片
              //获取上次的图片字符串
              let pic = this.data.afterSaleDetail.pic;
              // 和这次的拼接在一起，上次最后有一个，
              console.log(pic,"上传了新的图片吗上次的图片字符串");
              let returnImgs = this.data.returnImgs;
              returnImgs.forEach(item=>{
                 pic+=item+","; 
              })

              console.log(pic,"拼接后的图片")

              data.pic = pic;
              updateForAfterSales(data).then(res=>{
                console.log(res) 
                if(res.data.code == 200){
                  wx.showToast({
                    title: '修改成功！',
                  })

                  setTimeout(() => {
                    wx.navigateBack({});
                  },2000);
                }else{
                    wx.showToast({
                      title: '修改失败！请稍后再试。',
                    })
                }
              })
          }
// --------------------后面是申请售后的代码，这里直接return 就不会执行了-----------------------
          return;
      }


      //获取售后需要的数据
      let orderDetail = this.data.orderDetail;

      let data = {
          openId:wx.getStorageSync('loginInfo').openid,
          orderId:orderDetail.details[0].orderId,
          merchantId:orderDetail.merchantId,
          totalMoney:orderDetail.paySum,
          afterSalesType:orderDetail.afterSaleType,
          logisticsRecord:this.data.logistics,
          status:2
          // spec:[{
          //     specId:orderDetail,
          //     num:orderDetail.goodsAmount
          // }],
          //afterSalesCause:,//字符串
          //returnShippingName:"",//买家退回物流名称
          //returnShippingCode:""//买家退回物流单号
      }


      //获取spec
      let spec = [];
      orderDetail.details.forEach(item=>{
        //  判断是不是选中的商品
          if(this.data.ids[item.id]){
            let specItem={
              specId:item.id,
              num:item.goodsNum
            }
            spec.push(specItem);
          }
      })


      if(spec.length<1){
          wx.showToast({
            title: '您没有选中任何商品哦！',
          })

          return;
      }

      spec = JSON.stringify(spec);
      data.spec = spec;
      //退款说明和退款原因要拼接在一起。随便使用什么符号
      let reason = this.data.reason + this.data.explain;
      data.afterSalesCause = reason;
      //判断是不是上传了图片
      console.log(this.data.returnImgs,"售后上传的图片------");
      if(this.data.returnImgs.length>0){
          let imgs = '';
          let returnImgs = this.data.returnImgs;
          returnImgs.forEach(item=>{
              imgs += item + ","
          })
          console.log(imgs);
          imgs = imgs.substring(0,imgs.length-1);
          data.pic = imgs; 
          
      }



      // 判断是不是填写支付宝账号和姓名
      if(this.data.zfb&&this.data.zfbName){
        // userZfb;退款用户支付宝
        // userZfbName;退款用户支付宝姓名
        data.userZfb = this.data.zfb;
        data.userZfbName = this.data.zfbName;
      }else{
        //如果是这样必须填写支付宝账号
          if(orderDetail.afterSaleType == 2&&orderDetail.payStatus == true){
            wx.showToast({
              title: '请填写支付宝账户',
              icon:'none'
            })

            return;
          }
             
      }
      console.log(data,"售后数据");

      //发送请求,申请售后
      applyForAfterSales(data,orderDetail.version).then(res=>{
           console.log(res)
           if(res.data.code==200){
              wx.showToast({
                title: '添加成功',
              })
              // //售后详情
              // wx.navigateTo({
              //   url:'/pages/afterSaleDetail/afterSaleDetail?id='+id,
              // })
              setTimeout(() => {
                wx.navigateBack({});
              },2000);
           }else{
             wx.showToast({
               title: res.data.msg,
               icon:"none"
             })
           }
      })

  },

  //输入域input 事件
  inputTextArea(e){
       console.log(e.detail.value);
       this.setData({
          explain:e.detail.value
       })
  },





  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },


  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})